Conventional programming environments do not fully support multi-computer processing unit (CPU) and cross-network execution, or flexible sharing of data between large numbers of computing processes.
For example, conventional user-facing computing platforms (e.g., OS X, Microsoft Windows, X Windows atop UNIX) provide facilities for transmitting event data between processes. But these existing mechanisms all suffer from shortcomings that make it difficult to build multi-process and multi-machine applications, and that force users working in more than one programming language to jump through frustrating hoops. For example, conventional event frameworks are strongly typed, which makes them inflexible, privileges the assumptions of the systems vendor over the application programmer, and forms a mismatch with the facilities of increasingly popular dynamic languages (e.g., Ruby, Python and Perl). The conventional frameworks are also configured only to support point-to-point data transfers, which makes coordinating the activity of more than a few distinct processes difficult or impossible. The conventional frameworks are also strongly dependent on particular local, in-memory data structures, which renders them unsuited for on-disk storage or transmission across a network.